﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL
Imports DevComponents.DotNetBar


Public Class ctrlEdicionUsuario
    Private _llamador As frmMainMetro
    Private _bAlta As Boolean
    Private _oUsuario As cUsuario
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnAceptar.Text = _RM.GetString("btnAceptar")
        btnCancelar.Text = _RM.GetString("btnCancelar")

        lblTituloForm.Text = _RM.GetString("strDetallesUsuario")

        lblLegajo.Text = _RM.GetString("strLegajo") + ":"
        lblNombre.Text = _RM.GetString("strNombre") + ":"
        lblApellido.Text = _RM.GetString("strApellido") + ":"
        lblIdioma.Text = _RM.GetString("strIdioma") + ":"
        lblEstado.Text = _RM.GetString("strEstado") + ":"

    End Sub

    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
    End Sub

    Public Sub CargarComboIdioma()
        Dim oIdioma As cIdioma
        Dim colObjetos As Collection
        Dim cmbItem As ComboBoxItem


        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        cmbIdioma.BeginUpdate()

        cmbIdioma.Items.Clear()

        cmbItem = New ComboBoxItem

        cmbItem.Tag = ""
        cmbItem.Text = _RM.GetString("strComboSeleccioneItem")

        cmbIdioma.Items.Add(cmbItem)

        Try
            colObjetos = GestorIdioma.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oIdioma In colObjetos

                    cmbItem = New ComboBoxItem

                    cmbItem.Tag = oIdioma.Idi_Codigo
                    cmbItem.Text = oIdioma.Idi_Nombre

                    cmbIdioma.Items.Add(cmbItem)
                Next
            End If

            cmbIdioma.SelectedIndex = 0

        Catch ex As Excepciones.IdiomaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        cmbIdioma.EndUpdate()

    End Sub

    Public Sub CargarComboEstado()
        Dim oEstado_Usuario As cEstado_Usuario
        Dim colObjetos As Collection
        Dim cmbItem As ComboBoxItem


        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        cmbEstado.BeginUpdate()

        cmbEstado.Items.Clear()

        cmbItem = New ComboBoxItem

        cmbItem.Tag = ""
        cmbItem.Text = _RM.GetString("strComboSeleccioneItem")

        cmbEstado.Items.Add(cmbItem)

        Try
            colObjetos = GestorEstadoUsuario.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oEstado_Usuario In colObjetos

                    cmbItem = New ComboBoxItem

                    cmbItem.Tag = oEstado_Usuario.EstU_Codigo
                    cmbItem.Text = oEstado_Usuario.EstU_Descrip

                    cmbEstado.Items.Add(cmbItem)
                Next
            End If

            cmbEstado.SelectedIndex = 0

        Catch ex As Excepciones.Estado_UsuarioFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        cmbEstado.EndUpdate()

    End Sub

    Private Function ValidarForm() As Boolean
        Dim bValido As Boolean = True

        If txtNombre.Text.Trim = "" Then bValido = False
        If txtApellido.Text.Trim = "" Then bValido = False
        If cmbIdioma.SelectedIndex <= 0 Then bValido = False
        If cmbEstado.SelectedIndex <= 0 Then bValido = False

        ValidarForm = bValido

    End Function

    Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
        Dim oAux As cUsuario


        If ValidarForm() Then
            oAux = New cUsuario
            oAux.Usu_Legajo = lblLegajoUsuario.Text
            oAux.Usu_Nombre = txtNombre.Text
            oAux.Usu_Apellido = txtApellido.Text
            oAux.Idioma.Idi_Codigo = Utils.Convert.ToInt16(cmbIdioma.SelectedItem.tag)
            oAux.Estado_Usuario.EstU_Codigo = Utils.Convert.ToInt16(cmbEstado.SelectedItem.tag)

            Try
                GestorUsuario.Instance.Editar(oAux)
                GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.SegUsuarioModificacion))

            Catch ex As Excepciones.UsuarioFalloEditar
                Main.ManejarExcepcion(ex)
            Catch ex As Exception
                Main.ManejarExcepcion(ex)
            End Try

            _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
            _llamador.RefrescarGrillas()
        Else
            lblMensajes.Text = "Complete todos los datos requeridos..."
        End If

    End Sub

    Public Sub MostrarParaEdicion(oUsuario As cUsuario)

        _bAlta = False

        lblMensajes.Text = ""

        _oUsuario = oUsuario

        LlenarForm(oUsuario)

        txtNombre.Focus()

    End Sub

    Private Sub LlenarForm(oAux As cUsuario)

        If Not oAux Is Nothing Then
            lblLegajoUsuario.Text = oAux.Usu_Legajo
            txtNombre.Text = oAux.Usu_Nombre
            txtApellido.Text = oAux.Usu_Apellido
            PosicionarComboIdioma(cmbIdioma, oAux.Idioma.Idi_Codigo)
            PosicionarComboEstadoUsuario(cmbEstado, oAux.Estado_Usuario.EstU_Codigo)

        Else
            lblLegajo.Text = ""
            txtNombre.Text = ""
            txtApellido.Text = ""
            cmbIdioma.SelectedIndex = 0
            cmbEstado.SelectedIndex = 0
        End If

    End Sub

    Private Sub PosicionarComboIdioma(cmbAux As Object, sTag As String)
        Dim cmbItem As DevComponents.DotNetBar.ComboBoxItem

        If cmbAux.Items.Count > 1 Then
            For Each cmbItem In cmbIdioma.Items
                If cmbItem.Tag = sTag Then
                    cmbAux.SelectedItem = cmbItem
                End If
            Next
        End If

    End Sub

    Private Sub PosicionarComboEstadoUsuario(cmbAux As Object, sTag As String)
        Dim cmbItem As DevComponents.DotNetBar.ComboBoxItem

        If cmbAux.Items.Count > 1 Then
            For Each cmbItem In cmbEstado.Items
                If cmbItem.Tag = sTag Then
                    cmbAux.SelectedItem = cmbItem
                End If
            Next
        End If

    End Sub

End Class
